<?php

defined('EN_CODE') or die(__FILE__.': Direct Access Denied');
define('BUNDLE', 'marcas');

// traer el modelo del modulo
$helper->include_model('marcas');

// titulo y slug de la pagina
$title = 'Marcas';
$slug = 'marcas';

$listado = false;
if (isset($parameters[2])) switch ($parameters[2]) {

  /**
    
    nuevo

  */
  case 'nuevo':
    $content .= $helper->include_template(BUNDLE.'/formulario', array('action'=>'new', 'key'=>SHA1('new'.CSRF_TOKEN)));
    break;

  /**
    
    procesar formulario

  */
  case 'guardar':
    $action = ($request->request->get('action'));
    $key = ($request->request->get('key'));
    $guardar = false;
    if (is_null($action) || is_null($key)) {
      $listado = true;
      break(1);
    }
    if ($request->request->get('key')!=(SHA1($request->request->get('action').CSRF_TOKEN))) {
      $content = $helper->include_template('error/server_error', array('message'=>'Se detectó un ataque CSRF!! Dejá de joder y leete un libro...'));
      break(2);
    }
    /**
      si viene nuevo
    */
    if ($action=='new') {
      $marca = una_marca_con(array('nombre'=>$request->request->get('nombre')));
      if ($marca) {
        $message = 'Ya existe una marca con ese nombre!!';
        $message_type = 'error';
        $listado = true;
        break(1);
      } else {
        $guardar = true;
      }
      /**
        si viene de editar
      */
    } else if ($action=='edit') {
      $marca = una_marca($request->request->get('id_marca'));
      if (!$marca) {
        $message = 'La marca que intenta editar no existe!!';
        $message_type = 'error';
        $listado = true;
        break(1);
      }
      $otra_marca = una_marca_con(array('nombre'=>$request->request->get('nombre')));
      if ($otra_marca && $otra_marca['id_marca']!=$request->request->get('id_marca')) {
        $message = 'Ya existe una marca con ese nombre!!';
        $message_type = 'error';
      } else if ($marca['nombre']!=$request->request->get('nombre')) {
        $guardar = true;
      }
    }
    /**
      tiene que guardar los cambios (validacion)
    */
    if ($guardar) {
      // valida el nombre
      $nombre = trim($request->request->get('nombre'));
      if (empty($nombre)) {
        $message = 'Envió un nombre vacío';
        $message_type = 'error';
        $listado = true;
        break(2);
      }
      /**
        guarda la nueva marca
      */
      $id_marca = upsert_marca(array('nombre'=>$nombre), $request->request->get('id_marca', null));
      if (!$id_marca) {
        $message = 'Se produjo un error al guardar la marca';
        $message_type = 'error';
      } else {
        $message = 'Se guardaron los cambios correctamente';
        $message_type = 'info';
        $marca = una_marca($id_marca);
      }
    }
    /**
      
      editar

    */
  case 'editar':
    if ((!$request->query->has('marca')) && (!isset($marca))) {
      $content = $helper->include_template('error/server_error', array('message'=>'No se selecciono ninguna marca'));
      $response->setStatusCode(412);
      break(1);
    }
    if ($request->query->has('marca')) {
      $marca = una_marca($request->query->get('marca'));
    }
    if (!$marca) {
      $content = $helper->include_template('error/server_error', array('message'=>'La marca seleccionada no existe'));
      $response->setStatusCode(412);
      break(1);
    }
    $content .= $helper->include_template(BUNDLE.'/formulario', array('marca'=>$marca, 'action'=>'edit', 'key'=>SHA1('edit'.CSRF_TOKEN)));
    break;

    /**

      eliminar

    */
  case 'eliminar':
    if (!$request->query->has('marca')) {
      $content = $helper->include_template('error/server_error', array('message'=>'No se seleccionó ninguna marca'));
      $response->setStatusCode(412);
    } else if ((!$request->query->has('token')) || ($request->query->get('token')!=(SHA1($request->query->get('marca').CSRF_TOKEN)))) {
      $content = $helper->include_template('error/server_error', array('message'=>'Se detectó un ataque CSRF!! Dejá de joder y leete un libro...'));
    } else {
      $marca = una_marca($request->query->get('marca'));
      if ($marca) {
        $helper->include_model('productos');
        if (!un_producto_con(array('id_marca'=>$marca['id_marca']))) {
          if (eliminar_marca($marca['id_marca'])) {
            $message = "Se eliminó la marca";
            $message_type = 'info';
          } else {
            $message = "Se produjo un error al eliminar la marca";
            $message_type = 'error';
          }
        } else {
            $message = "No se puede eliminar la marca porque tiene productos asociados";
            $message_type = 'error';
        }
      }
      $listado = true;
    }
    break;

  default:
    $listado = true;
} else {
  $listado = true;
}

/**
  listado
*/

// listado esta aca por ser la pagina por default
if ($listado) {
  // va a buscar el listado de marcas
  $listado_marcas = listado_total_marcas();
  // muestra el template
  $content .= $helper->include_template(BUNDLE.'/listado', array('marcas'=>$listado_marcas));
}

?>

